<?php


namespace app\api\controller\v1;


use app\api\service\Notify as NotifyService;
use app\api\validate\IDMustBePositiveInt;
use app\api\service\Pay as PayService;

class Pay extends Base
{

    protected $beforeActionList = [
        //只有user能访问
        'checkExclusiveScope' => ['only' => 'getPreOrder']
    ];
    //自己订单信息发到微信服务器，微信服务器返回一个预订单信息
    public function getPreOrder($id = '')
    {   //用户在选择商品后，向api提交商品信息
        //api接收到商品数据后，检测商品库存
        //有库存，把订单数据存到数据库，下单成功返回客户端消息
        //客户端调用支付接口，支付
        //再次检测库存
        //php后台调用微信支付接口，进行支付
        //小程序根据php后台返回的结果，拉起微信支付
        //（小程序端也会接收到一个结果）
        //微信向php后台返回支付结果（异步调用）
        // 支付成功：库存量检测（超卖），检测成功，更新订单status状态，库存量扣除，
        // 支付失败：返回失败结果
        (new IDMustBePositiveInt())->goCheck();
        $pay = new PayService($id);
        return $pay->pay();
    }

    //微信服务器异步通知   不能加?参数 xml格式数据 post方式
    public function receiveNotify()
    {
        $notify = new NotifyService();
        $notify->Handle();
    }
}